Every C programmer knows about the math.h
header file of the C programming language. This header defines various mathematical functions and one macro. All the functions available in this library take double as an argument and return a double as result.
One of the known features of this library is the sqrt
function, the pretty useful function double sqrt(double number)
that returns the square root of number
:
#include <stdio.h>
#include <math.h>
int main () {
/// 2.000000
printf("Square root of %lf is %lf\n", 4.0, sqrt(4.0) );
/// 2.236068
printf("Square root of %lf is %lf\n", 5.0, sqrt(5.0) );
return(0);
}
Pretty easy right? However, teachers at universities don't like to let the things easy for students, that's why in programming classes you may need to find a way to find the square root of a number without using this library in C !
As homeworks or tasks aren't optional, we'll show you how you can easily achieve this goal without using the sqrt
function in C.
Implementation
To get started, we'll expose you the solution directly and we'll explain at the end of the article:
#include<stdio.h>
void main()
{
int number;
float temp, sqrt;
printf("Provide the number: \n");
scanf("%d", &number);
// store the half of the given number e.g from 256 => 128
sqrt = number / 2;
temp = 0;
// Iterate until sqrt is different of temp, that is updated on the loop
while(sqrt != temp){
// initially 0, is updated with the initial value of 128
// (on second iteration = 65)
// and so on
temp = sqrt;
// Then, replace values (256 / 128 + 128 ) / 2 = 65
// (on second iteration 34.46923076923077)
// and so on
sqrt = ( number/temp + temp) / 2;
}
printf("The square root of '%d' is '%f'", number, sqrt);
}
The code works like this: initially, the program will prompt the user for the number from which we want to find the square root. We will store the half of the number in a variable dividing it by 2, namely sqrt
. Then, we will declare a temp variable that will store a copy of the previous value of sqrt
namely temp
. Finally, we will loop until the sqrt variable is different of temp, inside we will update the value of temp with the previous sqrt
value and so on. The sqrt
value is update by the described operation in the code and that's it. Once the loop ends, you will be able to print the square root of the number.
Happy coding !